#include <iostream>
#include <string.h>

class Subject;

class Observer {
public:
    Observer(std::string name, Subject* sub) {
        this->name = name;
        this->sub = sub;
    }
    virtual void Update(){}

public:
    std::string name;
    Subject* sub;
};

class StockObserver : public Observer {
public:
    StockObserver(std::string name, Subject* sub) : Observer(name, sub) {}
    void Update();
};

class NBAObserver : public Observer {
public:
    NBAObserver(std::string name, Subject* sub) : Observer(name, sub) {}
    void Update();
};